#include "eigen/hidden_layer.h"

namespace  ldl_eigen
{
void HiddenLayer::forward(const Eigen::MatrixXf &input, Eigen::MatrixXf &output)
{
    set_input(input);
    forward();
    output = m_output;
}
Eigen::MatrixXf& HiddenLayer::backward(const Eigen::MatrixXf &output_gradient)
{
    set_output_gradient(output_gradient);
    backward();
    return m_input_gradient;
}

Eigen::MatrixXf& HiddenLayer::output()
{
    return m_output;
}
void HiddenLayer::set_input(const Eigen::MatrixXf& input)
{
    m_ptr_input = &input;
}
Eigen::MatrixXf& HiddenLayer::input_gradient()
{
    return m_input_gradient;
}
void HiddenLayer::set_output_gradient(const Eigen::MatrixXf& gradient)
{
    m_ptr_output_gradient = &gradient;
}

}